package se.kernel;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.MulticastSocket;

public class ThreadRecibirMensajesMulticast extends Thread
{
    private ConversacionMulticast conversacion;

    private MulticastSocket sockIn;

    public ThreadRecibirMensajesMulticast( ConversacionMulticast conversacion, MulticastSocket sockIn )
    {
        this.sockIn = sockIn;
        this.conversacion = conversacion;
    }

    @Override
    public void run( )
    {
        super.run( );
        try
        {
            recibirMensajes( );
        }
        catch( IOException e )
        {
            e.printStackTrace( );
        }
    }

    public void recibirMensajes( ) throws IOException
    {
        boolean activo = true;
        while( activo )
        {
            byte[] buffer = new byte[2024];
            DatagramPacket paquete = new DatagramPacket( buffer, buffer.length );
            sockIn.receive( paquete );
            String[] mensaje = new String( buffer ).split( ":" );
            if( mensaje[ 0 ].equals( Conversacion.MENSAJE ) )
                conversacion.recibirMensaje( mensaje[ 2 ], mensaje[ 1 ] );
            else if( mensaje[ 0 ].equals( Conversacion.ARCHIVO ) )
                conversacion.recibirArchivo( mensaje[ 1 ], mensaje[ 3 ], Integer.parseInt( mensaje[ 2 ] ) );
        }
    }
}
